<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>
    
    
    var arr = [4, 5, 3, 7, 6];
    console.log(arr);

    // 规则：从左向右依次，取数组中的一个数据和后面所有数据做比较，拿到最小的之后，再和当前位置交换

    // 比较次数
    // [4, 5, 3, 7, 6]
    // 0: 0-1  0-2  0-3  0-4
    // [3, 5, 4, 7, 6]
    // 1: 1-2  1-3  1-4
    // [3, 4, 5, 7, 6]
    // 2: 2-3  2-4
    // [3, 4, 5, 7, 6]
    // 3: 3-4
    // [3, 4, 5, 6, 7]

    // 整理之后
    // 0: 0-1  0-2  0-3  0-4    i ~ < length
    // 1: 1-2  1-3  1-4         i ~ < length
    // 2: 2-3  2-4              i ~ < length
    // 3: 3-4                   i ~ < length

    // 0 ~ < length-1行

    // 1. 确定比较次数的行数
    for(var i=0;i<arr.length-1;i++){
        // 3. 将要和后面所有数据做比较的值单独保存出来，同时记录索引
        var x = arr[i];
        var xIndex = i;
        // 2. 确定每行要比较的次数（列）
        for(var j=i+1;j<arr.length+1;j++){
            // 4. 和后面所有数据比较
            if(x > arr[j]){
                // 5. 基准值比后面的值大，保存更小的值，同时记录索引
                x = arr[j];
                xIndex = j;
            }
        }
        // 6. 一行比较完毕后，绝对可以获取到最小值和对应的索引
        // 先将当前位置的数据，放在最小值的位置
        arr[xIndex] = arr[i];
        // 再将最小值，放在当前位置
        arr[i] = x;
    }
    console.log(arr);

    // 错误的交换
    // [5,4,3,2,1]
    // x = 1
    // arr[0] = x;
    // [1,4,3,2,1]

    // 正确的交换
    // [5,4,3,2,1]
    // arr[x的位置] = arr[0]
    // [5,4,3,2,5]
    // x
    // arr[0] = x
    // [1,4,3,2,5]








    
</script>
</html>